package com.lanyam.travel.base.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lanyam.travel.base.entity.Permission;
import com.lanyam.travel.base.entity.Role;
import com.lanyam.travel.base.entity.TravelMenu;
import com.lanyam.travel.base.entity.User;
import com.lanyam.travel.base.entity.vo.DistrUserVo;
import com.lanyam.travel.base.entity.vo.FormReport;
import com.lanyam.travel.base.entity.vo.TravelOrderVo;
import com.lanyam.travel.base.entity.vo.UserVo;

public interface UserService {


	User queryPhoneIsExist(String phone);

	void saveUser(User user);

	User queryUserForLogin(String phone, String md5Str);

	Role getRoleByUserId(String userId);
	
	List<Permission> getPermissionsByUserId(String userId);

	User getUserByOpenid(String openid);
	/**
	 * 获取所有会员的分页数据
	 * @param pageNum
	 * @param pageSize
	 * @param reqPara
	 * @return
	 */
	List<User> queryUsersByPage(int pageNum, int pageSize, Map<String, String> reqPara);
	/**
	 * 获取所有用户分页数据
	 * @param pageNum
	 * @param pageSize
	 * @param reqPara
	 * @return
	 */
	Page<User> getUsersByPage(int pageNum, int pageSize, Map<String, String> reqPara);

	UserVo getUserById(String id);

	void updateUser(User user);

	List<Role> getAllRoles();

	List<Permission> getAllPermissions();

	void updateUserRole(String userId, String roleId);

	void deleteUser(String id);

	String modifyPassword(String userId, String newPassword);

	User getCurrentUser();
	/**
	 * 获取管理员分页数据
	 * @param page
	 * @param pageSize
	 * @param reqPara
	 * @return
	 */
	Page<UserVo> queryAdminPage(int page, int pageSize, Map<String, String> reqPara);

	User queryUserById(String userId);

	Map<String,List<Object>> getUserCountByDays(Date startDate, Date endDate);

	/**
	 * 查询列表数据
	 */
	IPage<UserVo> getPage(Map<String, Object> queryMap, Integer page, Integer rows);

	List<TravelMenu> getMenusInUser(String userId);

}
